package com.example.web;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;


@Component
public class CustomZuulFilter extends ZuulFilter {

    @Override
    public String filterType() {
        return "post";// 在请求被路由之前拦截
    }

    @Override
    public int filterOrder() {
        return 1; // 定义过滤器的顺序，越小优先级越高
    }

    @Override
    public boolean shouldFilter() {
        return true; // 是否执行该过滤器，这里为true，说明需要拦截
    }


    @Autowired
    StringRedisTemplate redisTemplate;
    @Override
    public Object run() {


        RequestContext ctx = RequestContext.getCurrentContext();
        // 获取请求路径
        String requestUrl = ctx.getRequest().getRequestURI();


        // 判断请求路径是否为需要拦截的页面，比如"/admin"页面
        if ("/index/bookshelf.html".equals(requestUrl) || "/index/user.html".equals(requestUrl) || "/index/comment.html".equals(requestUrl) || "/index/content.html".equals(requestUrl)) {
            // 拦截这个页面的访问
            if(redisTemplate.opsForValue().get("jwt") == null){
                // 未登录，重定向到登录页面
                ctx.setSendZuulResponse(false);
                ctx.setResponseStatusCode(302); // 302状态码表示重定向
                ctx.getResponse().setHeader("Location", "/index/login.html"); // 设置重定向到登录页面
            }


        }


        return null;
    }
}